const jsonwebtoken = require('jsonwebtoken')
// 私钥 不能泄露
const secret = 'sfsfsfsfsklklkl'
// 导入数据模型  model 操作数据库表的一些方法和类型约束
const userModel = require('../model/userModel')
const auth = {
  register(req, res) {
    // 1、接收用户传递的注册数据信息
    let data = req.body
    // 2、存储到mongodb
    userModel
      .insertMany([data])
      .then((rs) => {
        // console.log(rs)
        // 3、是否注册成功的信息
        if (rs) {
          res.send({
            code: 0,
            msg: '注册成功',
            data: rs
          })
        } else {
          res.send({
            code: 1,
            msg: '注册失败,请联系管理员',
            data: []
          })
        }
      })
      .catch((err) => {
        // console.log(err.code)
        // console.log(err.writeErrors[0].err.errmsg)
        console.log(err)
        res.send({
          code: 1,
          msg: err.writeErrors[0].err.errmsg,
          data: []
        })
      })
  },
  login(req, res) {
    let data = req.body
    userModel
      .findOne({ username: data.username, password: data.password }, { __v: 0 })
      .then((rs) => {
        // console.log(rs)
        // 3、是否能够使用手机号和密码匹配到信息
        if (rs) {
          token = jsonwebtoken.sign(
            // payload 载荷 参数信息
            {
              // 用户id
              uid: rs._id,
              // 过期时间
              exp: Math.ceil(Date.now() / 1000) + 7200
            },
            // 私钥
            secret
          )
          res.send({
            code: 0,
            msg: '登录成功',
            token,
            data: rs
          })
        } else {
          res.send({
            code: 1,
            msg: '登录失败,用户名或者密码错误',
            data: []
          })
        }
      })
      .catch((err) => {
        // console.log(err.code)
        // console.log(err.writeErrors[0].err.errmsg)
        res.send({
          code: 1,
          msg: err.writeErrors[0].err.errmsg,
          data: []
        })
      })
  },
  profile(req, res) {
    // const uid = req.payload.uid
    // ES6 对象结构语法
    const { uid } = req.payload
    userModel.findOne({ _id: uid }, { __v: 0 }).then((rs) => {
      // console.log(rs)
      if (rs) {
        token = jsonwebtoken.sign(
          // payload 载荷 参数信息
          {
            // 用户id
            uid: rs._id,
            // 过期时间
            exp: Math.ceil(Date.now() / 1000) + 7200
          },
          // 私钥
          secret
        )
        res.send({
          code: 0,
          msg: '个人信息获取成功',
          token,
          data: rs
        })
      } else {
        res.send({
          code: 1,
          msg: '个人信息获取失败',
          data: []
        })
      }
    })
  }
}
module.exports = auth
